package com.itheima.listdemo;

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class MovieService {

    //4.定义一个集合容器，用于存储全部上架的电影数据
    private static List<Movie> movies = new ArrayList<>();

    private static Scanner sc = new Scanner(System.in);

    public void start() {
        //3.准备操作界面：GUI界面/命令行界面
        while (true) {
            System.out.println("--------------电影信息管理系统--------------");
            System.out.println("0.退出系统");
            System.out.println("1.上架某部电影");
            System.out.println("2.下架某部电影");
            System.out.println("3.查询某部电影");
            System.out.println("4.下架某个演员参与的所有电影");
            System.out.println("5.展示全部电影信息");
            System.out.println("请输入操作命令：");
            String cmd = sc.next();
            switch (cmd) {
                case "0":
                    System.out.println("退出成功！");
                    return;
                case "1":
                    //上架某部电影（独立功能独立成方法）
                    addMovie();
                    break;
                case "2":
                    //下架某部电影
                    removeMovie();
                    break;
                case "3":
                    ///查询某部电影
                    queryMovie();
                    break;
                case "4":
                    //下架某个演员参与的所有电影
                    removeActorMovie();
                    break;
                case "5":
                    //展示全部电影信息
                    showMovies();
                    break;
                default:
                    System.out.println("输入有误，请重新输入！");
                    break;
            }
        }

    }

    private void showMovies() {

        System.out.println("========展示全部电影信息========");
        for (Movie movie : movies) {
            System.out.println(movie);
        }
        System.out.println("共" + movies.size() + "部电影");

    }

    private void removeActorMovie() {

        System.out.println("========下架某演员参与的电影========");
        System.out.println("请输入演员名称：");
        String actor = sc.next();
        for (int i = 0; i < movies.size(); i++) {
            Movie movie = movies.get(i);
            if (movie.getActor().contains(actor)) {
                movies.remove(movie);
                System.out.println(movie.getName() + "下架成功！");
                i--;        //删除元素，索引值需要-1（防止并发修改异常）
            }
        }
        showMovies();

    }

    private void removeMovie() {
        System.out.println("========下架电影========");
        System.out.println("请输入电影名称：");
        String name = sc.next();
        Movie movie = queryMovieByName(name);
        if (movie != null) {
            //如果电影存在，则删除
            movies.remove(movie);
            System.out.println("下架成功！");
        } else {
            System.out.println("没有找到该电影！");
        }
    }

    private void queryMovie() {

        System.out.println("========查询电影========");
        System.out.println("请输入电影名称：");
        String name = sc.next();
        //根据电影名称查询电影对象并返回
        Movie movie = queryMovieByName(name);
        if (movie != null) {
            //System.out.println(movie);
            System.out.println("电影名称：" + movie.getName());
            System.out.println("演员：" + movie.getActor());
            System.out.println("评分：" + movie.getScore());
            System.out.println("票价：" + movie.getPrice());
        } else {
            System.out.println("没有找到该电影！");
        }

    }

    //根据电影名称查询电影对象并返回
    public Movie queryMovieByName(String name) {

        for (Movie movie : movies) {
            if (movie.getName().equals(name)) {
                return movie;
            }
        }
        return null;        //没有找到该电影

    }


    private void addMovie() {

        //分析：上架电影其实就是新增电影，每部电影是一个电影对象封装数据的
        // 1.创建电影对象，封装电影信息
        // 2.给电影对象的属性赋值
        // 3.将电影对象添加到集合中
        System.out.println("========上架电影========");
        Movie movie = new Movie();
        System.out.println("请输入电影名称：");
        movie.setName(sc.next());
        System.out.println("请输入演员：");
        movie.setActor(sc.next());
        System.out.println("请输入电影评分：");
        movie.setScore(sc.nextDouble());
        System.out.println("请输入电影票价：");
        movie.setPrice(sc.nextDouble());
        movies.add(movie);
        System.out.println("上架成功！");

    }
}
